// Package layer_range_tree 2-199
// @Title layer_range_tree
// @Description
// @Author  == 琳琳也叫王木木 ==  2021/9/16 14:08
// @Create  2021/9/16 14:08
package layer_range_tree

// 返回二叉树的右视图
func RightSideView(root *TreeNode) []int {
	if root == nil {
		return nil
	}
	ans := []int{}
	queue := []*TreeNode{root} // 先把头结点压入队列中
	for len(queue) > 0 {
		size := len(queue)
		tempArr := []int{} // 临时数组，保存当前层所有元素
		for i := 0; i < size; i++ {
			cur := queue[0]
			queue = queue[1:]
			tempArr = append(tempArr, cur.Val)
			if cur.Left != nil {
				queue = append(queue, cur.Left)
			}
			if cur.Right != nil {
				queue = append(queue, cur.Right)
			}
			// 将当前数组的最后一个元素加入数组中
			ans = append(ans, tempArr[len(tempArr)-1])
		}
	}
	return ans
}
